package com.lyn.anr.core;


import com.lyn.anr.entity.InvokeInfo;
import com.lyn.anr.handler.AnrHandler;
import com.lyn.anr.pool.InvokeInfoPool;

/**
 * 字节码插桩耗时调用类
 * @author longyn 2025/07/15
 * @version 1.0.0
 */
public class Anr {

    /***
     * 耗时 插桩调用方法
     * @param id 方法调用id
     * @param className 类名
     * @param methodName 方法名称
     * @param currentTimeMillis 方法执行耗时
     */
    public static void invoke(String id, String className, String methodName, long currentTimeMillis) {
        InvokeInfo invokeInfo = InvokeInfoPool.INSTANCE.obtain();
        invokeInfo.setId(id);
        invokeInfo.setClassName(className);
        invokeInfo.setMethodName(methodName);
        invokeInfo.setTimeMillis(currentTimeMillis);
        invokeInfo.setThreadName(Thread.currentThread().getName());
        AnrHandler.INSTANCE.push(invokeInfo);
    }
}
